const RES_CODE = require('../utils/constants');
const {
    verifyToken
} = require('../utils/tokenUtils')

/* 
用于token校验的中间件
*/
module.exports = async (req, res, next) => {
    /* 
  - 解决预检请求被后台的token校验的中间件拦截的问题
    - 解决: token校验的中间件不要拦截预检查, 直接放行
  */
    if (req.method === 'OPTIONS') {
        next()
        return 
    }
    try {
        //读取请求头中的token
        const token = req.headers['token']
        //对token进行校验
        const userId = await verifyToken(token)
        //将用户id保存到req上=>传递给后面的路由回调
        req.userId = userId
        //放行请求
        next()
    } catch (error) {
        console.log(error)
        //失败返回401错误响应
        res.statusCode = 401;
        res.send({
            code: RES_CODE.DATA_ERROR,
            messgae: error.message
        })
    }
}